CodeIgniter היא פריימוורק מעולה למי שעושה את צעדיו הראשונים בעולם הפריימוורקים לPHP כמו גם למתכנתים שמחפשים פיתוח מהיר על פלטפורמה קלה עם קהילה מאוד גדולה.
CodeIgniter - introduction
ברוכים הבאים לפרק הראשון בסדרת מאמרים שתלמד את השימוש בפריימוורק שנקרא CodeIgniter.
בסדרה זו אנחנו נלך צעד צעד מההתחלה וההתקנה המאוד קלה של הפריימוורק עד לשימושים מורכבים מאוד שניתן לעשות איתו.
למה CI
CI היא פריימוורק בארכיטקטורת MVC, קלת משקל עם חתימת זכרון קטנה מאוד, והיא נחשבת לפריימוורק המהירה ביותר לPHP.
(ולא, אני לא הולך להתווכח על זה, המיקרופון כרגע אצלי ולכן אני קובע!)
לCI יש את את התיעוד הטוב ביותר שאני אישית מכיר, ואת מוזמנים לבדוק אותו:
http://codeigniter.com/user_guide/
מאוד קל להיכנס אל תוכה וללמוד אותה, ואני ממליץ עליה מאוד לאנשים שמתחילים ללמוד שימוש בפריימוורקים לPHP בתור פרייוורק ראשון.
למי CI לא מתאימה?
לאנשים שמחפשים שימוש מוגבר ביכולות של PHP 5. הCI עוברת הסבה כיום לתמיכה מלאה בPHP 5 אבל נכתבה במקור עם תמיכה בPHP4, לצערי חלקים ממנה עדיין לא עברו טרנספורמציה מלאה והיא לא משתמשת במלוא מגוון הכלים של הPHP5.
מכיוון שהCI מאפשרת הרחבה מאוד קלה של הפריימוורק, אני אישית הרחבתי ושיכתבתי חלקים מהקוד שלה כך שייתנו יותר פונקציונאליות, כך שמי שרוצה ניתן לעשות זאת.
הארכיטקטורה של CI היא .MVC ניתן להפוך אותה לHMVC באמצעות הרחבות שיש לה, וישנם לא מעט פרוייקטים שמאפשרים זאת, אבל מי שמחפש HMVC טבעי, זה לא המקום עבורו.
אז איך מתחילים?
CI איננה דורשת קינפוג של סביבת עבודה מורכבת, כדי להפעיל אותה מה שצריך לעשות זה להוריד את הגרסה האחרונה מהאתר, תפתחו תיקייה מתאימה בROOT שלכם (אני משתמש בwamp אז לדוגמא:
c:\wamp\www\CI
ותפרשו את התוכן של הקובץ שהורדתם אל תוך התיקייה.
ו....הופה!, סיימנו!
בשלב זה ההתקנה הסתיימה ואם תגלשו אל http://localhost/CI (או אל התיקייה אליה פרשתם את הZIP)
אתם אמורים לראות את המסך הבא:
אם אתם לא רואים את המסך הזה, כנראה שלא חילצתם את הקבצים למקום המתאים, שימו לב לפרוש ככה שהקובץ Index.php ישב בתיקייה עצמה, ולא בתוך עוד תת תיקייה.
Post installation
הCI מוכנה לעבוד ישירות מהקופסה, אבל ישנם עוד כמה דברים שאני ממליץ לעשות כדי להפוך אותה לבטוחה יותר, ונוחה יותר לעבודה.
ראשית מומלץ למחוק את תיקיית הuser guide שיורדת עם הCI, זה גם משקל מיותר, וכמובן שתמיד עדיף להשתמש בעותק האונליין, נושא נוסף הוא security אני תמיד אעדיף שתוקף אפשרי לא ידע מהי המערכת שאני מריץ, ולכן אנחנו מוחקים סימנים לזה שמאחורי הקלעים רצה CI.
שנית מאותה סיבה אני ממליץ להעביר את הlicence לתיקייה שלא קריאה מבחוץ (לדוגמא system).
בשלב זה אני גם שם קובץ.htaccess שמטפל בראוטינג של הבקשות, אבל עליו נדבר בהמשך כשנבין איך עובד הראוטינג של הCI, בכל מקרה תוודאו שהmod_rewrite פועל בwamp שלכם, וכמובן שבפרודקשן, צריך שהוא יהיה פעיל (הCI יודע לעבוד בלעדיו אבל זה מאוד לא מומלץ!)
הקשחות security
בשיעור הבא נדבר על מבנה הקבצים של הCI ונרחיב עליו, אבל כחלק מההתקנה אני מציע כבר להגדיר את הגדרות הסקיוריטי המתאימות לכם.
אחד העקרונות שמנחים את מתכנני הCI הוא ששום דבר לא נטען לבד בלי בקשה מפורשת מהמתכנת, זה גורם למערכת לרוץ מאוד מהר כי היא לא טוענת ספריות מיותרות, אבל זה אומר שהיא מגיעה כשספריות ההבטחה לא פעילות, ודבר ראשון שאנחנו נעשה זה לשנות את זה!
קובץ ההגדרות הבסיסי יושבת תחת application/config/config.php תפתחו אותו ותשנו את ההגדרות הבאות:
//שימו כאן מפתח רנדומאלי כלשהו באורך של 120 תווים לפחות
$config['encryption_key'] ='SOME RANDOM KEY'
//תשנו את הקדומת של העוגיות לכל דבר אחר מCI
$config['cookie_prefix']='XX_'
//יגרום לניקוי אוטומטי של כל המידע הנכנס מהתקפות XSS
$config['global_xss_filtering'] = TRUE;
//ימנע התקפות של CSRF אבל ייצר לכם בעיה עם AJAX ופייסבוק
// יש לזה פתרונות ונעבור עליהם בהמשך כשנדבר על אבטחה
$config['csrf_protection'] = TRUE;
$config['encryption_key'] ='SOME RANDOM KEY'
//תשנו את הקדומת של העוגיות לכל דבר אחר מCI
$config['cookie_prefix']='XX_'
//יגרום לניקוי אוטומטי של כל המידע הנכנס מהתקפות XSS
$config['global_xss_filtering'] = TRUE;
//ימנע התקפות של CSRF אבל ייצר לכם בעיה עם AJAX ופייסבוק
// יש לזה פתרונות ונעבור עליהם בהמשך כשנדבר על אבטחה
$config['csrf_protection'] = TRUE;
שימו לב הcsrf_protection יעשה לכם בעיות עם קריאות AJAX במתודת POST וכן שימוש בCI כFacebook Tab, כיוון שהוא מחפש token ייחודי בכל POST שנשלח למערכת, אנחנו נפתור זאת בהמשך אך חשוב שתהיו מודעים לכך
לסיכום
CI היא פריימוורק קלה לשימוש ודורשת מעט משאבים, עם התקנה פשוטה.
בשיטת הורד - פרוש - השתמש!
שיעור הבא נלמד איך להשתמש בה
תגובות לכתבה:
אחלה מאמר,
מחכה למאמרים הבאים :)
לא הפריימוורק הכי מהיר אבל בהחלט פריימוורק מעולה למתחילים.
אישית אני עדיין אוהב אותו יותר מכל פריימוורק אחר שניסיתי, רק בגלל הפשטות.
אבל אם נלך על מהירות, אז Yii או אפילו Yaf.
מחכה למאמר הבא !
יש כאן המשך לחסרי סבלנות -> http://codeigniter.com/tutorials/
אחלה פריימוורק !
פריימוורק נחמד לדעתי רק חבל באמת שהוא לא עבר הסבה מלאה לגרסאות 5.x של PHP שמממשות הרבה תכונות יפות וחדשניות .
לא הבנתי את המשפט הבא:
", וכמובן שבפרודקשן, צריך שהוא יהיה פעיל (הCI יודע לעבוד בלעדיו אבל זה מאוד לא מומלץ!)"
מה זה הפרודקשן?